package old.controller;

import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;

import old.business.PessoaBusiness;
import old.entity.Pessoa;

import java.io.Serializable;

@Named
@SessionScoped
public class PessoaController implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6796219626681545720L;

	private Pessoa pessoa = new Pessoa();
	
	private List<Pessoa> pessoaList;
	
	private String operacao;

	@EJB (mappedName="java:global/almirante/PessoaBusiness")
	private PessoaBusiness pessoaBusiness;
	
	
	public String pesquisarPessoa() {
		try {
			
			pessoaList = pessoaBusiness.listarPessoa();
			
			return "/pages/pessoa/listar_pessoa";

		} catch (Exception e) {
			//Message.setMessage(new Exception(e));
			return "/pages/pessoa/listar_pessoa";
		}
	}
	
	public String pesquisarPessoaCriteria() {
		try {
			
			pessoaList = pessoaBusiness.pesquisarPessoa(pessoa);
			
			return "/pages/pessoa/listar_pessoa";

		} catch (Exception e) {
			//Message.setMessage(new Exception(e));
			return "/pages/pessoa/listar_pessoa";
		}
	}
	
	
	public String iniciarCadastrarPessoa () {
		try {
			pessoa = new Pessoa();
			return "/pages/pessoa/editar_pessoa";
			
		} catch (Exception e) {
			//log.error(e.getMessage(), e);
			//Message.setMessage(new ApplicationException(e));
			return "/pages/inicial";
		}
	}
	
	public String iniciarAlteracaoPessoa () {
		try {
			pessoa = pessoaBusiness.obterPessoa(pessoa.getIdPessoa());
			return "/pages/pessoa/editar_pessoa";
			
		} catch (Exception e) {
			//log.error(e.getMessage(), e);
			//Message.setMessage(new ApplicationException(e));
			return "/pages/inicial";
		}
	}
	
	public String cadastrarPessoa() {
		
		try {
			pessoaBusiness.cadastrarPessoa(pessoa);
		} catch (Exception e) {
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "");
			FacesContext.getCurrentInstance().addMessage(null, message);
		}
		
		return pesquisarPessoa();
		
	}
	
	public String alterarPessoa() {
		
		try {
			pessoaBusiness.alterarPessoa(pessoa);
		} catch (Exception e) {
			//Message.setMessage(new ApplicationException(e));
		}
		
		return pesquisarPessoa();
		
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public List<Pessoa> getPessoaList() {
		return pessoaList;
	}

	public void setPessoaList(List<Pessoa> pessoaList) {
		this.pessoaList = pessoaList;
	}

	public String getOperacao() {
		return operacao;
	}

	public void setOperacao(String operacao) {
		this.operacao = operacao;
	}
	
}
